#include "tabledialog.h"
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QFormLayout>
#include <QDialogButtonBox>

TableDialog::TableDialog(QWidget *parent)
    : QDialog(parent)
{
    setWindowTitle("插入表格");
    
    // 创建布局
    auto mainLayout = std::make_unique<QVBoxLayout>();
    auto formLayout = std::make_unique<QFormLayout>();
    
    // 创建行数和列数输入框
    rowsSpinBox = std::make_unique<QSpinBox>(this);
    rowsSpinBox->setRange(1, 50);
    rowsSpinBox->setValue(3);
    
    columnsSpinBox = std::make_unique<QSpinBox>(this);
    columnsSpinBox->setRange(1, 20);
    columnsSpinBox->setValue(3);
    
    // 添加到表单布局
    formLayout->addRow("行数:", rowsSpinBox.get());
    formLayout->addRow("列数:", columnsSpinBox.get());
    
    // 创建按钮
    auto buttonBox = std::make_unique<QDialogButtonBox>(
        QDialogButtonBox::Ok | QDialogButtonBox::Cancel,
        Qt::Horizontal, this);
    
    connect(buttonBox.get(), &QDialogButtonBox::accepted, this, &QDialog::accept);
    connect(buttonBox.get(), &QDialogButtonBox::rejected, this, &QDialog::reject);
    
    // 添加布局
    mainLayout->addLayout(formLayout.release());
    mainLayout->addWidget(buttonBox.release());
    
    setLayout(mainLayout.release());
    
    // 设置合理的初始大小
    resize(250, 120);
}

TableDialog::~TableDialog()
{
    // 智能指针会自动处理内存释放
}

int TableDialog::rows() const
{
    return rowsSpinBox->value();
}

int TableDialog::columns() const
{
    return columnsSpinBox->value();
}